This invention relates to methods and systems for synchronizing multiple computing devices. In particular, the invention relates to methods and systems for synchronizing multiple different web servers.
As the popularity of networked systems, e.g. distributed computing systems, continues to grow and find use in contemporary times, there is an ever increasing need to ensure that certain computing devices within such systems are synchronized. By xe2x80x9csynchronizedxe2x80x9d it is meant that the configuration of resources that each computing device uses to perform its job are the same, and that any associated resource settings are standard across all of the computing devices. Specifically, many times, due to scalability issues (i.e. adding additional computing devices to service a larger or growing client base), it becomes desirable to implement a particular functionality across multiple computing devices. In these instances it is highly desirable for each different computing device to operate identically. This is important because it is likely that different clients will be serviced by different computing devices. Accordingly, it is highly desirable for each client to receive the same service and be able to accomplish the same tasks even though they are using different computing devices. In order for the computing devices to operate identically, the pertinent resource configurations should be the same across all of the computing devices. Yet, often times this is not the case. When the configuration of resources is not standardized, inconsistent results can occur.
As a more concrete example, consider the case of a computing device in the form of a server that is programmed to function as a Web server. The World Wide Web or xe2x80x9cWebxe2x80x9d works on a client/server model in which client softwarexe2x80x94known as a Web browserxe2x80x94runs on a local computer. The server software runs on a Web server. Client machines effect transactions with Web servers using Hypertext Transfer Protocol (HTTP), which is a known application protocol providing users with access to files (e.g., text, graphics, images, sound, video, etc.) using a standard page description language known as Hypertext Markup Language (HTML). HTML provides basic document formatting and allows the developer to specify xe2x80x9clinksxe2x80x9d to other servers and files. In the Internet paradigm, a network path to a server is identified by a so-called Uniform Resource Locator (URL) having a special syntax for defining a network connection. Use of an HTML-compatible browser (e.g., Internet Explorer) at a client machine involves specification of a link via the URL. In response, the client makes a request to the server identified in the link and receives in return a document formatted according to HTML. The Web server is usually a standalone file server that services various Web document requests. One particular type of Web server is Microsoft""s Internet Information Server (IIS).
One of the problems that has arisen, and one which is particularly illustrated in the context of Web servers, is that customers often need to scale Web servers so that its services are widely available and highly reliable. One way of doing this is to incorporate multiple servers into a networked system. Each of the individual servers should operate identically in order for the same services to be rendered regardless of which server is used to the render services. In order for the servers to operate identically, their resource configurations should be the same. If the resource configurations are not the same, then inconsistent results can occur. Computing devices such as Web servers can typically have many different types of resources and settings. As an example, Microsoft""s IIS has resources that include, but are not limited to files, metabase entries, registry keys, and cryptographic functions. Current solutions are inadequate to solve the problems of synchronizing multiple servers. For example, there are solutions that copy files from one server to another, or that replicate a resource setting from one machine to another, but these solutions fall far short synchronizing non-file resources and, in particular, multiple different resources and settings.
Accordingly, this invention arose out of concerns associated with providing systems and methods for synchronizing resource configurations across multiple computing devices.
Methods and systems for synchronizing a configuration of resources across multiple computing devices are described. In the described embodiment, a computer network comprises a master computing device and a plurality of additional computing devices communicatively linked with the master computing device. The master computing device comprises a configuration of resources that are desired to be synchronized across the additional computing devices. The master computing device is configured to develop a set of lists that describe aspects of its configuration of resources. Each additional computing device is configured to receive the lists that are developed by the master computing device and evaluate the lists to determine whether its particular configuration of resources are synchronized with those of the master computing device. If a particular additional computing device""s configuration of resources is not synchronized with those of the master computing device, the additional computing device prepares a second set of lists that describe its resource configuration needs and sends the second set of lists to the master computing device. The master computing device receives the second list set, evaluates it, and sends data to the corresponding additional computing device for use in synchronizing its configuration of resources. Each of the additional computing devices can send separate independent lists that describe their resource needs and the master computing device is capable of individually responding to each one. In one aspect, the computing devices are computer servers that are configured as Web servers.
One aspect provides a server software architecture that comprises a replication engine to handle communication between a master server and a plurality of member servers. At least one driver is provided and is capable of communicating with the replication engine. The driver is associated with a particular resource type (a.k.a. store) that is accessible from the master server. Resources could potentially be stored on a remote location (e.g., a remote file system). In the described embodiment, each resource type of interest has its own separate driver that is programmed to interact with it. Each driver is configured to prepare lists that describe characteristics of its associated resource and articulate the lists to the replication engine. The replication engine is configured to receive the lists from the driver(s) and send the lists to one or more of the member servers so that the member servers can use the lists to synchronize a resource that corresponds to the resource with which the driver(s) is associated. In the described embodiment, each of the member servers has an architecture that mirrors the architecture of the master server. Accordingly, each member server has a replication engine to handle communication with the master server, and a collection of member servers drivers that are individually associated with different resource types that are resident on the member server. Each of the member server drivers is configured to evaluate the resources with which it is associated in response to its replication engine receiving a list from the master server""s replication engine. The member server driver then determines whether its resources are synchronized with a corresponding resource on the master server. The member server driver is further configured to prepare a response to the master server that describes resource needs of the member server in the event that a resource is determined not to be synchronized with the corresponding resource on the master server. The master server receives the response with its replication engine and passes the response to the corresponding master server driver that is associated with the resource of interest. The master server driver then prepares a reply to the response that includes data that can be used by the member server driver to update or synchronize its resource type. The reply is sent to the member server and processed by the member server""s replication engine. The replication engine passes the reply to the appropriate driver so that the driver can synchronize the resource of interest.
Another aspect automatically synchronizes resource configurations across multiple computing devices so that any time a resource configuration is updated or changed on, a master computing device, those changes get promulgated to a plurality of member servers. In the described embodiment, promulgation of the resource configuration changes takes place in a list-based manner.